#ifndef MAINWINDOW_H
#define MAINWINDOW_H


#include <QtWidgets/QtWidgets>
#include "GameEditor.h"


namespace Ui {
class MainWindow;
}

class ProjectDoc;

#define MAX_RECENT_FILES	5


class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    
public slots:
    void onActFileNew();
    void onActFileOpen();
    void onActFileSave();
    void onActFileSaveAs();
    void onActFileSaveAll();
    void onActFileClose();
    void onActFileRename();
    void onActFileRecentFile();
    void onActFileExit();

    void onActEditUndo();
    void onActEditRedo();
    void onActEditCut();
    void onActEditCopy();
    void onActEditPaste();
    void onActEditDel();

    void onActViewToolBar(bool checked);
    void onActViewStatusBar(bool checked);
    void onActViewSlnExplorer(bool checked);

    void onActToolExport();
    void onActToolImport();

    void onActHelpManual();
    void onActHelpAbout();

    void onSlnItemDblClicked(QTreeWidgetItem *item, int column);

protected:
    void createActions();

    void updateMenuBar();
    void updateToolBar();
    void updateDockBar();

    void updateRecentFileActions();

    QString strippedName(const QString &fullFileName);
    void setCurrentFile(const QString &filename);
    QWidget *activeMdiChild();

    void createProject(const QString &filename, const QString &folder);
    void openProject(const QString &filename);
    void closeProject();

    int createFile(const QString &filename, uint fileType);
    void openFile(const QString &filename, uint fileType, int userType);
    void saveFile();
    void closeFile();

    void populateSolution();

protected:
    QAction			*mActRecentFiles[MAX_RECENT_FILES];

    QTreeWidgetItem	*mRoot;

    ProjectDoc		*mProjectDoc;

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H
